package chapter6;
import java.util.Scanner;
/****************************************************************
 * Author：icynlau
 * Description: 
A palindromic prime is a prime number and also palindromic（回文）.

For example, 131 is a prime and also a palindromic prime, as are 313 and 757.

Write a program that displays the first n palindromic prime numbers. Display 10 numbers per line, separated by exactly one space.

输入格式:
输入n，n的最大值为100。

输出格式:
输出前n个回文质数，每行显示10个数，两数之间用一个空格分隔。
 * Date:2021/4/6
 * ***************************************************************
 */
public class pta6_3 {
	
	public static boolean isPrime(int n) {
		//是否素数
		boolean ret=true;
		for(int i=2;i<=n/2;i++) {
			if(n%i==0) {
				return false;
				//这里有个比较值得注意的地方，
				//如果我这一步只是将ret赋值为true，不及时返回的话
				//会继续浪费很多时间进行没有意义的循环
			}
		}
		
		return ret;
	}
	
	public static boolean isPalindrome(int n) {
		//是否是回文数
		boolean ret=true;
		
		String s=Integer.toString(n);
		int index1=0;
		int index2=s.length()-1;
		if(s.length()!=1) {
			while(index1==(s.length()-index2-1) && index1<=index2) {
				if(s.charAt(index1) != s.charAt(index2)) {
					ret=false;
				}
				index1++;
				index2--;
			}
		}
		
		/*//下面这样用for循环也可，不用进行s长度是否为1的判断了
		for(int i=0;i<s.length()-1;i++) {
			if(s.charAt(i)!=s.charAt(s.length()-1-i)) {
				ret=false;
			}
		}
		*/
		
		return ret;
	}
	
	public static void main(String[] args) {
		
		int sum=0;	//当前回文素数个数
		int n=2;	//检测数
		int base=0;		//控制换行
		Scanner input=new Scanner(System.in);
		int number=input.nextInt();
		
		while(sum<number) {
			
			if(isPrime(n) &&isPalindrome(n)) {
				System.out.printf("%d ",n);
				sum++;
				if(sum%10==0&&sum!=base) {
					base+=10;
					System.out.print("\n");
				}
			}
			
			n++;
			
		}//end of while
		
	}

}
